package com.kwum.pattern.SingletonPattern;


/**
 * Description: demo，用于查看各实例成果
 * 单例模式
 * 建议使用饿汉方式。只有在要明确实现 lazy loading 效果时，才会使用登记方式。如果涉及到反序列化创建对象时，可以尝试使用枚举方式。
 * 如果有其他特殊的需求，可以考虑使用双检锁方式。
 * @author Kwum
 * @date 2017年9月11日 上午10:14:37
 * @version 1.0
 */

public class SingletonDemo {

    public static void main(String[] args) {
        //SingletonHungry
        SingletonHungry sh1 = SingletonHungry.getInstance();
        SingletonHungry sh2 = SingletonHungry.getInstance();
        if(sh1 == sh2){
            System.out.println("sh1 == sh2");
        } else {
            System.out.println("sh1 != sh2");
        }
        
        //SingletonHungryUpgrade
        SingletonHungryUpgrade shu1 = SingletonHungryUpgrade.getInstance();
        SingletonHungryUpgrade shu2 = SingletonHungryUpgrade.getInstance();
        if(shu1 == shu2){
            System.out.println("shu1 == shu2");
        } else {
            System.out.println("shu1 != shu2");
        }
        
        //SingletonLazyDCL
        SingletonLazyDCL sld1 = SingletonLazyDCL.getSingleton();
        SingletonLazyDCL sld2 = SingletonLazyDCL.getSingleton();
        if(sld1 == sld2){
            System.out.println("sld1 == sld2");
        } else {
            System.out.println("sld1 != sld2");
        }
    }
}
